home *** CD-ROM | disk | FTP | other *** search
Text File | 1994-11-09 | 1.3 KB | 60 lines | [TEXT/R*ch] |
- function GetNamedDCtlEntry (driverName: str31): DCtlHandle;
- type
- Ptr2Word = ^integer;
- const
- UnitNtryCnt = $1D2; {[GLOBAL VAR] count of entries in unit
- table [word]}
- dRamBased = $40;
- type
- DriverHand = ^DriverPtr;
- DriverPtr = ^DriverStruct;
- DriverStruct = record
- drvrFlags: integer;
- drvrDelay: integer;
- drvrEMask: integer;
- drvrMenu: integer;
- drvrOpen: integer;
- drvrPrime: integer;
- drvrCtl: integer;
- drvrStatus: integer;
- drvrClose: integer;
- drvrName: str31;
- end;
-
- var
- id: integer;
- DCtl: DCtlHandle;
- curDrvrPtr: DriverPtr;
-
- begin
- for id := -1 downto -(Ptr2Word(UnitNtryCnt)^ + 1) do
- begin
- DCtl := GetDCtlEntry(id);
- if DCtl <> nil then
- begin
- curDrvrPtr := DriverPtr(DCtl^^.dCtlDriver);
- if curDrvrPtr <> nil then
- begin
- if BitAnd(DCtl^^.dCtlFlags, dRAMBased) <> 0 then
- curDrvrPtr := DriverHand(curDrvrPtr)^;
- if (EqualString(curDrvrPtr^.drvrName, driverName, false, true)) then
- begin
- GetNamedDCtlEntry := DCtl;
- exit(GetNamedDCtlEntry);
- end;
- end;
- end;
- end;
- GetNamedDCtlEntry := nil;
- end;
-
- function DrvrOpen (DCtl: DCtlHandle): boolean;
- const
- dOpened = $20;
- begin
- if DCtl = nil then
- DrvrOpen := false
- else
- DrvrOpen := BitAnd(DCtl^^.dCtlFlags, dOpened) <> 0;
- end;
-